package com.example.demo.Test;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import java.io.File;
import java.util.Stack;

/**
 * @author ：liubinqiang
 * Created in 2020/8/31 14:52
 */
public class TestController {
    public static void main(String[] args) {
        File dir = new File("E://demo2");

        JSONObject json = new JSONObject(); //json文件
        json.put("name", "module");
        json.put("file", "module");
        json.put("type", "dir");
        json.put("_level", 0);
        json.put("repeat", "ignore");
        json.put("children", JSONUtil.createArray());
        traversal(dir, 1);//文件目录  传第一级
    }

    private static void traversal(File file, int depth) {
        printName(file, depth);
        File[] fileArray = file.listFiles();

        Stack<File> stack = new Stack<File>();
        assert fileArray != null;
        for (File f : fileArray) {
            if (!f.getName().equals("target") & !f.getName().endsWith(".idea") & !f.getName().endsWith(".git") & !f.getName().endsWith(".gitignore")  & !f.getName().equals(".demo2") &!f.getName().endsWith(".mvn") &!f.getName().endsWith(".iml") &!f.getName().endsWith("HELP.md") &!f.getName().endsWith("mvnw") &!f.getName().endsWith("mvnw.cmd") ){
                if (f.isFile()) {
                    printName(f, depth + 1);
                } else {
                    stack.add(f);
                }
            }

        }
        while (!stack.isEmpty()) {
            traversal(stack.pop(), depth + 1);
        }
    }

    private static void printName(File f, int signNum) {
        StringBuilder builder = new StringBuilder();
        //signNum个sign
        for (int i = 0; i < signNum; i++) {
            if (i == signNum - 1)
                builder.append(" ");
            else
                builder.append("      ");
        }

        String str = builder.toString();
        System.out.println(str + f.getName());

    }
}